package com.yjy.orderStateTest;

import com.yjy.orderStateTest.impl.PendingPaymentState;

/**
 * 状态模式中的3中角色：
 * 环境(Context)角色，也称上下文：定义客户端所感兴趣的接口，并且保留一个具体状态类的实例。
 * 抽象(State)状态角色：定义一个接口，用以封装环境（Context）对象的一个特定的状态所对应的行为
 * 具体状态(ConcreteState)角色：每一个具体状态类都实现了环境（Context）的一个状态所对应的行为
 */
public class MainTest {

    public static void main(String[] args) {
        OrderState orderState = new PendingPaymentState();
        Context context = new Context(orderState);
        context.printInfo();

        //用户付款
        context.action();
        context.printInfo();

        //商家出库发货
        context.action();
        context.printInfo();

        //用户签收
        context.action();
        context.printInfo();

        //用户评价
        context.action();
        context.printInfo();
    }
}